﻿using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;
using Acaweb.Model.Entities;
using Acaweb.Model.Entities.DatosCompuestos;

namespace Acaweb.Servicios.Contracts
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IInscripcionesService" in both code and config file together.
    [ServiceContract]
    public interface IInscripcionesService
    {

        [WebInvoke(Method = "POST", UriTemplate = "CreateInteresado", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void CreateInteresado(Interesados Interesado);

        [WebInvoke(Method = "POST", UriTemplate = "CreateEstudiante", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void CreateEstudiante(Estudiantes Estudiante);

        [WebInvoke(Method = "POST", UriTemplate = "GetInteresadoByIdentificacion", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Interesados> GetInteresadoByIdentificacion(Identificacion Identificacion);

        [WebInvoke(Method = "POST", UriTemplate = "GetInteresadosByPlanEstudio", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Interesados> GetInteresadosByPlanEstudio(int CodigoPlan);

        [WebInvoke(Method = "POST", UriTemplate = "GetInteresadosByPeriodoAcademico", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Interesados> GetInteresadosByPeriodoAcademico(PeriodoAcademico PeriodoAcademico);

        [WebInvoke(Method = "POST", UriTemplate = "CreateInscrito", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void CreateInscrito(Inscritos Inscrito);

        [WebInvoke(Method = "POST", UriTemplate = "UpdateInscrito", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void UpdateInscrito(Inscritos Inscrito);

        [WebInvoke(Method = "POST", UriTemplate = "GetInscritoByIdentificacion", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Inscritos> GetInscritoByIdentificacion(Identificacion Identificacion);

        [WebInvoke(Method = "POST", UriTemplate = "GetInscritoByPlanEstudio", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Inscritos> GetInscritoByPlanEstudio(int CodigoPlan);

        [WebInvoke(Method = "POST", UriTemplate = "GetInscritosByPeriodoAcademico", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Inscritos> GetInscritosByPeriodoAcademico(PeriodoAcademico PeriodoAcademico);

        [WebInvoke(Method = "POST", UriTemplate = "GetInscritosByEstadoAndPeriodoAcademico", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        List<Inscritos> GetInscritosByEstadoAndPeriodoAcademico(int Estado, PeriodoAcademico PeriodoAcademico);

        [WebInvoke(Method = "POST", UriTemplate = "GetInscritosById", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        Inscritos GetInscritosById(int Id);

        [WebInvoke(Method = "POST", UriTemplate = "AgregarEstudiante", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void AgregarEstudiante(Inscritos Inscrito);
    }
}
